package com.toommi.refuse.service;

import com.github.pagehelper.PageInfo;
import com.toommi.refuse.entity.Building;
import com.toommi.refuse.entity.Household;
import com.toommi.refuse.entity.Neighbourhood;

import javax.servlet.http.HttpServletRequest;

/**
 * ..
 * 小区操作
 *
 * @author yangg
 * @since 2019-07-25 09:55
 */
public interface NeighbourhoodService {

    /**
     * 新建小区
     *
     * @param neighbourhood 小区信息对象
     */
    void addNeighbourhood(Neighbourhood neighbourhood);

    /**
     * 删除指定小区
     *
     * @param id 被删除小区id
     */
    void deleteNeighbourhood(long  id);


    /**
     * 分页查找指定街道下的小区
     *
     * @param pageNum 页码
     * @param pageSize  每页数据量
     * @param street 街道id
     * @return 小区数据
     */
    PageInfo<Neighbourhood> findByStreet(int pageNum,int pageSize,String street);

    /**
     * 全局模糊查询小区
     * @param pageNum 页码
     * @param pageSize 每页数据量
     * @param keyWord 模糊查询关键字
     * @return 小区数据
     */
    PageInfo<Neighbourhood> findNeighbourhoods(int pageNum, int pageSize, String keyWord);

    /**
     * 为小区添加幢数
     *
     * @param building 楼栋信息
     */
    void addBuilding(Building building);

    /**
     * 删除指定的楼栋信息
     *
     * @param id 楼栋信息
     */
    void deleteBuilding(long  id);

    /**
     * 查找小区下的幢数，此时pageModel内condition为小区id
     * @param pageNum 页码
     * @param pageSize  每页数据量
     * @param neighbourhood 小区id
     * @return 小区下楼栋信息
     */
    PageInfo<Building> findBuildings(int pageSize,int pageNum,long neighbourhood);

    /**
     * 为楼层添加户数门牌号
     *
     * @param household 门牌号
     */
    void addHouseHold(Household household);

    /**
     * 删除指定门牌号
     *
     * @param id 门牌号信息
     */
    void deleteHouseHold(long  id);

    /**
     * 获取指定楼栋的门牌号信息
     * @param pageNum 页码
     * @param pageSize  每页数据量
     * @param building 楼栋id
     * @return 门牌号信息列表
     */
    PageInfo<Household> findHouseHolds(int pageNum,int pageSize,long building);

    /**
     * 根据code查询户号
     * @param code 新建时生成的唯一code
     * @return 户主门牌号
     */
    Household findHouseholdByCode(String code);

    /**
     * 后台获取小区信息
     * @param request
     * @return
     */
    Object getNeighbourhoodslist(HttpServletRequest request);

    /**
     * 后台获取楼栋列表
     * @param request
     * @return
     */
    Object buildlist(HttpServletRequest request);
}
